You may want to look at the model _meta API. https://docs.djangoproject.com/en/2.0/ref/models/meta/
You are looking for a list of all the ForeignKeys, but you also probably want other relations such as OneToOne and ManyToMany. You probably want something like the get_all_related_objects method: https://docs.djangoproject.com/en/2.0/ref/models/meta/#migrating-from-the-old-api The fields have an attribute called is_relation, one_to_one, and many_to_one. From: django-users@googlegroups.com [mailto:django-users@googlegroups.com] On Behalf Of Rob Schneider Sent: Tuesday, February 27, 2018 10:46 PM To: django-users@googlegroups.com Subject: Re: How to get Foreign Key Objects programmatically? Still a mystery to me. --rms On 28 Feb 2018, at 03:22, Malik Rumi <malik.a.r...@gmail.com<mailto:malik.a.r...@gmail.com>> wrote: Did you ever find an answer? If so, do you mind sharing it? Thanks. On Sunday, October 29, 2017 at 9:33:10 AM UTC-7, rmschne wrote: I'm using Django as front end to a MySQL database. User interface is a terminal program, not a web site. I've written a very simple generic function to edit the fields of one record of a Django "object". It works fine for editing editable fields. User specifies which field, then is shown the current value, raw_input() for the new value, then save() the record. For fields that connect to Foreign Keys, what I want to do is present to user a simple list of Foreign Key records, from which the user will pick the relevant ID. I know, given a list and the ID, how to then edit the record by doing a Django get(id=ID) on the Foreign Key table. What I'm having trouble doing is figuring how 1. Identify into a variable the name of the Foreign Key table/object 2. Then with that variable do a call to the relevant Foreign Key table, e.g. ForeignKeyTable.objects.all() See code below for <===WHAT I DO NOT KNOW HOW TO DO IN CODE Below. I think I need some Django function that gives me the foreign key table in some useable generic form. Hope all this makes sense. --rms def EditDjangoObjectData(djangoobject,show=False,editonerecord=False): """ EditDjangoObjectData() djangoojbect=a django object, e.g. a record in a table """ print "\n****ToDo Note: This routine not yet working on fields with foreign keys!" changelist=[] ok=True while ok: change=None fields = [(f.name<http://f.name>, f.editable) for f in djangoobject._meta.get_fields()] if show: print "\nfields:\n",fields print "django object:\n",djangoobject s="\nEditable Fields ('enter' to return): \n" fieldlist=[] for i in fields: if i[1]: # only for 'editable' fields if i[0].lower() <> "id": s=s+i[0]+", " fieldlist.append(i[0]) s=s+"DELETE or '?'" fieldok=False while not fieldok: fieldtochange=raw_input("Enter field name to change:\n"+s+": ") if not fieldtochange: return None elif fieldtochange.upper()=="DELETE": ans=raw_input("...Confirm DELETE by typing 'DELETE': ") try: if ans=="DELETE": rtn=djangoobject.delete() print "Deleted. ",rtn return rtn except: print "***DELETE Failed.",sys.exc_info()[0] ans=raw_input("Press 'Enter' to continue ... ") elif fieldtochange=="?": PrintObjectDetails(djangoobject) elif fieldtochange in fieldlist: fieldok=True else: print "\n****Error. ",fieldtochange,"is not in list. Try again." print "Current Value of Field to Change:",fieldtochange,"is:",getattr(djangoobject, fieldtochange) ** ** In here add some code to show a list of the foreign key records for user to select, e.g. ID, Description, **for r in ForeignKey.objects.all(): <== WHAT I DO NOT KNOW HOW TO DO IN CODE. ** print i.id<http://i.id>, i.description **ID=raw_input("Enter ID:) **foreignkeyobject=ForeignKey.objects.get(id=ID) <== WHAT I DO NOT KNOW HOW TO DO IN CODE. ** ... then put that object into the relevant field newvalue=raw_input("Enter New Value: ") change="changed ["+fieldtochange+"]" print "\nTo Save :",djangoobject print "The Change:",change,"to",newvalue if not newvalue: return None elif newvalue.lower()=="none": newvalue=None elif newvalue.lower()=="true": newvalue==True elif newvalue.lower()=="false": newvalue=False setattr(djangoobject, fieldtochange, newvalue) try: djangoobject.save() print ": Success. Saved:",change,"to",newvalue print ": New Object:",djangoobject changelist.append(change) print "ChangeList:",changelist except: print "***Save Failed.",sys.exc_info()[0] ans=raw_input("Press 'Enter' to continue ... ") if editonerecord: ok=False return changelist -- You received this message because you are subscribed to a topic in the Google Groups "Django users" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/ShjLffcxFDk/unsubscribe. To unsubscribe from this group and all its topics, send an email to django-users+unsubscr...@googlegroups.com<mailto:django-users+unsubscr...@googlegroups.com>. To post to this group, send email to django-users@googlegroups.com<mailto:django-users@googlegroups.com>. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e6ddd293-66ac-496a-94d4-10fd44cb1224%40googlegroups.com<https://groups.google.com/d/msgid/django-users/e6ddd293-66ac-496a-94d4-10fd44cb1224%40googlegroups.com?utm_medium=email&utm_source=footer>. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com<mailto:django-users+unsubscr...@googlegroups.com>. To post to this group, send email to django-users@googlegroups.com<mailto:django-users@googlegroups.com>. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/8EC6426B-DA91-4C27-97C1-C9D7A820E79A%40gmail.com<https://groups.google.com/d/msgid/django-users/8EC6426B-DA91-4C27-97C1-C9D7A820E79A%40gmail.com?utm_medium=email&utm_source=footer>. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/f55f172131e84b2bbf188874d441658b%40ISS1.ISS.LOCAL. For more options, visit https://groups.google.com/d/optout.