Reputation: 950
If I have a model like the following:
class Keyword(models.Model):
model1 = models.ForeignKey(Model1, null=True, blank=True, default=None)
model2 = models.ForeignKey(Model2, null=True, blank=True, default=None)
model3 = models.ForeignKey(Model3, null=True, blank=True, default=None)
model4 = models.ForeignKey(Model4, null=True, blank=True, default=None)
not_foreign_key = models.CharField(max_length=10, null=True, blank=True)
How can I iterate over each foreign key?
I'm imagining some sort of for loop like this (pseudocode):
for each foreign key in Keyword:
do something with the foreign key
Thank you for your help.
Upvotes: 0
Views: 1615
Reputation: 5290
You can use the private API to get all foreign key information:
# 'instance' is an instance of any kind of Django model
fields = instance._meta._get_fields(forward=True, reverse=False)
for field in fields:
obj_field_value = field.value_from_obj(instance) # This is the value the instance has for this field
foreign_key_related_model = field.related_model # returns the model the foreign key links to. There are plenty more properties here
Upvotes: 2