Django ไม่ทำให้เกิดข้อผิดพลาดเมื่อสร้างวัตถุโดยไม่ผ่านฟิลด์ที่จำเป็น

ฉันมีโมเดล Django เช่นนี้:

class Registration(models.Model):
    appId =models.CharField(max_length = 100)
    registeredUser = models.ForeignKey('auth.User', null=True, blank=True)

เมื่อฉันไปที่อินเทอร์เฟซ Django Shell โดยใช้เชลล์ python Manage.py และลองสร้างวัตถุการลงทะเบียนโดยไม่ผ่านฟิลด์ appId (ซึ่งเป็นฟิลด์บังคับ) เช่นนี้

Registration.objects.create(registeredUser = userobject)

มันสร้างออบเจ็กต์การลงทะเบียนโดยไม่ให้ข้อผิดพลาดแก่ฉัน คุณไม่สามารถตั้งค่า appId (ฟิลด์ที่ไม่สามารถเป็นค่าว่างได้) เป็นไม่มี! มันเกิดขึ้นได้อย่างไร? เหตุใดจึงไม่แจ้งข้อผิดพลาดให้ฉัน ฉันกำลังทำอะไรอยู่ ผิดหรือฉันขาดอะไรบางอย่างไป?


person user1170793    schedule 03.08.2012    source แหล่งที่มา


คำตอบ (1)


appID ของออบเจ็กต์การลงทะเบียนจะมีค่าเป็น '' (เช่น สตริงว่าง)

นอกจากนี้ โปรดดูเอกสารสำหรับตัวเลือก null คุณจะเห็นว่าการไม่มีตัวเลือก null ไม่ได้หมายความว่าฟิลด์นั้นไม่เป็น null แต่ null=True หมายความว่าค่าว่างจะถูกจัดเก็บเป็น NULL ในฐานข้อมูล

หากคุณต้องการหลีกเลี่ยงสตริงว่าง ให้เพิ่มกฎลงในการตรวจสอบความถูกต้องของฟิลด์โมเดลนั้น หรือผ่านทางแบบฟอร์มของคุณ

person LaundroMat    schedule 03.08.2012