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.

Вернуться на верх