1👍
You schema couldn’t be presented in SQL.
Option #1:
class Orderform(models.Model):
sell_item_id = models.CharField(max_length=20)
othermodel = models.OneToOneField("OtherModel")
and get it
Selled.objects.get(pk=1).orderform.othermodel
Option #2:
class Selled(models.Model):
orderform = models.ForeignKey("Orderform")
sell_count = models.IntegerField()
def something(self):
return OtherModel.objects.get(id=self.sell_item_id)
and get
Selled.objects.get(pk=1).something()
But I think you should better think about you DB schema.
0👍
It looks like you have a couple of questions, for the first, to get the related
Selled.objects.filter(order_form__sell_item_id =id_to_get).select_related('order_form')
Notice the __
(double underscore) before sell_item_id
. This is important because it says, selected Selleed
by the sell_item_id
of the OrderForm
. and select_related
makes sure that order form is brought back in the results with a single call to the db.
Now, if you want to do that for OtherModel
, you will need to create a similar ForeignKey
field in the OtherNodel
and this will allow you to make the same query as above. Currently, you have no such relation.
class OtherModel(models.Model):
somefield = models.CharField(max_length=20)
orderform = models.ForeignKey("Orderform")
OtherModel.objects.filter(order_form__sell_item_id =id_to_get).select_related('order_form')
Don’t forget to run:
python manage.py makemigration
python manage.py migrate
This should solve the issue.
Source:stackexchange.com