2016-10-11 2 views
0

Это мой код:Django: модель может быть создана без данных поля модели?

class Order(TimeStampedModel): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    merchant_uid = models.CharField(max_length=30, unique=True) 
    imp_uid = models.CharField(max_length=30) 
    from_cart = models.BooleanField() 

    class Meta: 
     ordering = ('-created',) 

    def __str__(self): 
     return self.merchant_uid 

Но странное дело,

  1. Order.objects.create(user=request.user, from_cart=True) работы (в views.py).

  2. order = Order(user=request.user, from_cart=True) и order.save() также работает.

Я не ставил blank=True и null=True на моих merchant_uidimp_uid, поля, что означает required поле.

Но как можно создать модель без этого поля ???

+2

Возможный дубликат [дифференцировать null = True, blank = True в django] (http://stackoverflow.com/questions/8609192/differentiate-null-true-blank-true-in-django) –

ответ

1

Значения остаются пустыми. Поскольку null=False, Django не сохраняет пустые значения как null для этих полей, а вместо этого база данных использует пустую строку ('') для столбца varchar, который не получает значения.

blank используется для проверки, например. при проверке ModelForm. Это не связано с ограничениями базы данных. Здесь вы не проводите проверки, поэтому это не имеет значения.

Смежные вопросы