Django 如何创建对象在 views.py 中有外键?
Django how to create object has foreignkey in views.py?
我写过这段代码:
views.py
if not null:
Address.objects.create(user = request.user,first_name = ad,last_name = soyad,address_title = baslik,address = adres,postalcode = posta,tel = gsm,il_ilce = Ilce.objects.get(il_id__il = sehir,ilce = ilce))
models.py
class Il(models.Model):
il = models.CharField(max_length=20,blank=False,null=False)
def __str__(self):
return str(self.il)
class Ilce(models.Model):
ilce = models.CharField(max_length=20,blank=False,null=False)
il_id = models.ForeignKey(Il,blank=False,null=False,on_delete=models.PROTECT)
def __str__(self):
return str(self.ilce)
class Address(models.Model):
first_name = models.CharField(max_length=30,blank=False,null=False)
last_name = models.CharField(max_length=30,blank=False,null=False)
user = models.OneToOneField(User,on_delete=models.CASCADE)
address_title = models.CharField(max_length=20,blank=False,null=False,default="Adres")
address = models.TextField(max_length=255,blank=False,null=False)
il_ilce = models.ForeignKey(Ilce,blank=False,null=False,on_delete=models.PROTECT)
postalcode = models.CharField(max_length=5,blank=False,null=False)
tel = models.CharField(max_length=11,blank=False,null=False)
def __str__(self):
return str(self.user) + '-' + str(self.address_title)
但我收到此错误:
duplicate key value violates unique constraint "Users_address_user_id_key"
DETAIL: Key (user_id)=(1) already exists.
我不希望代码创建新的用户对象我希望它只创建新的地址对象。
I don't want the code to create a new user object I want it to create a new address object only.
- 您在 Address 模型中使用了 OneToOneField这意味着如果您尝试再创建一个用户,每个用户都会有一个与之关联的地址,那么它将引发给定的异常 duplicate key value violates unique constraint "Users_address_user_id_key"
所以要解决这个问题,您可以使用
update_or_create(...)
[Djnago-doc] 或如果你想在一次使用中使用多个地址,那么你必须将 OneToOneFiled 更改为 ForeignKey.
我写过这段代码:
views.py
if not null:
Address.objects.create(user = request.user,first_name = ad,last_name = soyad,address_title = baslik,address = adres,postalcode = posta,tel = gsm,il_ilce = Ilce.objects.get(il_id__il = sehir,ilce = ilce))
models.py
class Il(models.Model):
il = models.CharField(max_length=20,blank=False,null=False)
def __str__(self):
return str(self.il)
class Ilce(models.Model):
ilce = models.CharField(max_length=20,blank=False,null=False)
il_id = models.ForeignKey(Il,blank=False,null=False,on_delete=models.PROTECT)
def __str__(self):
return str(self.ilce)
class Address(models.Model):
first_name = models.CharField(max_length=30,blank=False,null=False)
last_name = models.CharField(max_length=30,blank=False,null=False)
user = models.OneToOneField(User,on_delete=models.CASCADE)
address_title = models.CharField(max_length=20,blank=False,null=False,default="Adres")
address = models.TextField(max_length=255,blank=False,null=False)
il_ilce = models.ForeignKey(Ilce,blank=False,null=False,on_delete=models.PROTECT)
postalcode = models.CharField(max_length=5,blank=False,null=False)
tel = models.CharField(max_length=11,blank=False,null=False)
def __str__(self):
return str(self.user) + '-' + str(self.address_title)
但我收到此错误:
duplicate key value violates unique constraint "Users_address_user_id_key"
DETAIL: Key (user_id)=(1) already exists.
我不希望代码创建新的用户对象我希望它只创建新的地址对象。
I don't want the code to create a new user object I want it to create a new address object only.
- 您在 Address 模型中使用了 OneToOneField这意味着如果您尝试再创建一个用户,每个用户都会有一个与之关联的地址,那么它将引发给定的异常 duplicate key value violates unique constraint "Users_address_user_id_key"
所以要解决这个问题,您可以使用
update_or_create(...)
[Djnago-doc] 或如果你想在一次使用中使用多个地址,那么你必须将 OneToOneFiled 更改为 ForeignKey.