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, 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, 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 the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to