Django как создать объект с foreignkey в 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. - Вы использовали OneToOneField в вашей модели Address, что означает, что каждый пользователь будет иметь один адрес, связанный с ним, если вы попытаетесь создать еще один, то это вызовет исключение duplicate key value violates unique constraint "Users_address_user_id_key", поэтому для решения этой проблемы вы можете использовать
update_or_create(...) [Djnago-doc] или Если вы хотите использовать несколько адресов для одного использования, то вам нужно изменить OneToOneFiled на ForeignKey.