0
Django의 get_or_create에 문제가 있습니다. 동일한 날짜의 동일한 객체를 만들 때 무결성 오류가 팝업됩니다.DateField가있는 IntegrityError - get_or_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')
오류가 발생 동일한 날짜로부터-일까지 :
IntegrityError at /hoardings/hoardings-demo-2-5/add/
UNIQUE constraint failed: cart_cartline.cart_id, cart_cartline.date_from, cart_cartline.date_until
get_or_create
는 dates.I 고유 추가 같은과 개체를 만드는 동안 IntegrityError를 반환합니다 datefield에 기능이 있지만 동일한 오류가 발생했습니다. 장고 1.11과 파이썬 2.7을 사용합니다.
데이터베이스를 몇 번 리셋했는데 도움이되지 않았습니다. db는 Postgres/sqlite입니다.
모델의 '메타'클래스에 어떤 것을 작성 했습니까? – zaidfazil
게시 한 모델 코드에는 단일성 제약 조건이 없습니다. 당신은 전체 코드를 게시하지 않았거나 unicity contraint가 db 레벨이나 다른 것으로 선언되었지만이 코드만으로 오류를 재현 할 수 없으므로 도움을 줄 수 없습니다. –
@zaidfazil 클래스 '메타'가 추가되었습니다. –