我对Django的get_或_create有一个问题,每当我用相同的日期创建相同的对象时,就会出现完整性错误。在
我的领域如下。在
class Cart(models.Model):
created = models.DateTimeField(
pgettext_lazy('Cart field', 'created'), auto_now_add=True)
last_status_change = models.DateTimeField(
pgettext_lazy('Cart field', 'last status change'), auto_now_add=True)
user = models.ForeignKey(
settings.AUTH_USER_MODEL, blank=True, null=True, related_name='carts',
verbose_name=pgettext_lazy('Cart field', 'user'))
email = models.EmailField(
pgettext_lazy('Cart field', 'email'), blank=True, null=True)
def add(self,hoarding, date_from, date_until):
cart_line, created = self.lines.get_or_create(
hoarding=hoarding,date_from=date_from,date_until=date_until)
class Meta:
ordering = ('-last_status_change',)
verbose_name = pgettext_lazy('Cart model', 'Cart')
verbose_name_plural = pgettext_lazy('Cart model', 'Carts')
def __str__(self):
return smart_str(self.user)
class CartLine(models.Model):
cart = models.ForeignKey(
Cart, related_name='lines',
verbose_name=pgettext_lazy('Cart line field', 'cart'))
hoarding = models.ForeignKey(
Hoarding, related_name='+',blank=True, null=True,
verbose_name=pgettext_lazy('Cart line field', 'hoarding'))
date_from = models.DateField(blank=True, null=True,
verbose_name=pgettext_lazy('Cart line field', 'from'))
date_until = models.DateField(blank=True, null=True,
verbose_name=pgettext_lazy('Cart line field', 'until'))
class Meta:
unique_together = ('cart', 'date_from', 'date_until')
verbose_name = pgettext_lazy('Cart line model', 'Cart line')
verbose_name_plural = pgettext_lazy('Cart line model', 'Cart lines')
当我试图用相同的起始日期和截止日期将相同的对象添加到购物车时出现错误:
^{pr2}$当创建具有相同日期的对象时,get_or_create
将返回IntegrityError。我在datefield中添加了独特的功能,但是得到了相同的错误。
我使用django1.11和python2.7
我重置了几次数据库,但没用,数据库是Postgres/sqlite。在
CartLine模型中的
unique_together
导致了完整性问题。删除然后迁移。在相关问题 更多 >
编程相关推荐