Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Django how to create object has foreignkey in views.py?

I’ve wrote this code:

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

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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)

but I’m getting this error:

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.

>Solution :

I don't want the code to create a new user object I want it to create a new address object only. – You’ve used OneToOneField in your Address model which means each user will have one address associated with it if you try to create one more then it will raise given exception duplicate key value violates unique constraint "Users_address_user_id_key" so to solve this you can use
update_or_create(...) [Djnago-doc] or If you want to use multiple address against one use then you’ve to change OneToOneFiled to ForeignKey.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading