Still a mystery to me.

--rms


> On 28 Feb 2018, at 03:22, Malik Rumi <[email protected]> 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, 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 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 
> [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.

-- 
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/8EC6426B-DA91-4C27-97C1-C9D7A820E79A%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to