Let’s say I have these two models (in models.py file):
class FullName (models.Model):
firstName = models.CharField(max_length=30,null=True,blank=False,unique=True)
lastName = models.CharField(max_length=30,null=True,blank=False,unique=True)
class Address (models.Model):
addressLine = models.CharField(max_length=30,null=True,blank=False)
city = models.CharField(max_length=30,null=True,blank=False)
state = models.CharField(max_length=30,null=True,blank=False)
zipcode = models.CharField(max_length=30,null=True,blank=False)
How can I merge these two models in a new model but with the same Id? So it becomes:
class FullName (models.Model):
firstName = models.CharField(max_length=30,null=True,blank=False,unique=True)
lastName = models.CharField(max_length=30,null=True,blank=False,unique=True)
class Address (models.Model):
addressLine = models.CharField(max_length=30,null=True,blank=False)
city = models.CharField(max_length=30,null=True,blank=False)
state = models.CharField(max_length=30,null=True,blank=False)
zipcode = models.CharField(max_length=30,null=True,blank=False)
class AllInformation (models.Model):
firstName = models.CharField(max_length=30,null=True,blank=False,unique=True)
lastName = models.CharField(max_length=30,null=True,blank=False,unique=True)
addressLine = models.CharField(max_length=30,null=True,blank=False)
city = models.CharField(max_length=30,null=True,blank=False)
state = models.CharField(max_length=30,null=True,blank=False)
zipcode = models.CharField(max_length=30,null=True,blank=False)
(all fields should be inherited from FullName and Address models)
PS: In my views.py file I called a save method like that:
fullNameData = FullName(request.POST)
fullNameData.save()
and
AddressData = Address(request.POST)
AddressData.save()
Thanks in advance and I really appreciate who answers that because I see that many people having the same problem. I also took a look at the OneToOneField from django docs but I understood nothing to be honest xD
Advertisement
Answer
Solution:
When submitting the FullName form I just do:
data = AllInformation(firstName = request.POST.get("firstname"), lastName = request.POST.get("lastname"))
data.save()
Then in the 2nd function when submitting the Address form, I just do:
AllInformation.objects.filter(firstName=the first name got from FullName Form).update(addressLine = value, city = value, ... )
Hope it helps anyone who is trying to merge two (or more) models in one other model that should contain all of the previous model fields.