मैं नीचे दिखाए गए डीजेंगो में दो संबंधित तालिकाओं के शामिल होने से चयन करने का प्रयास कर रहा हूं। लेकिन मैं अन्य तालिका के क्षेत्र name
प्राप्त करने में सक्षम नहीं हूं।django मॉडल विदेशी कुंजी क्वेरीसेट संबंधित क्षेत्रों का चयन
एसक्यूएल में हम लिख सकते हैं:
select person.phonenumber,membership.* from membership where person=name ;
यह phonenumber
के साथ-साथ सभी membership
फ़ील्ड दिखाई देते हैं, लेकिन Django में यह त्रुटि फेंकता है:
Cannot resolve keyword 'phonenumber' into field
मैं भी select_related
लेकिन कोई फायदा नहीं के साथ की कोशिश की है । क्या मैं गलत हूं?
model.py:
from django.db import models
# Create your models here.
class Person(models.Model):
name = models.CharField(primary_key=True,max_length=128)
phonenumber = models.CharField(max_length=128)
city = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
>>> print m.query
SELECT `myapp_membership`.`id`, `myapp_membership`.`person_id`, `myapp_membership`.`date_joined`, `myapp_membership`.`invite_reason` FROM `myapp_membership` WHERE `myapp_membership`.`person_id` = x
>>> m=Membership.objects.filter(person__name='x').select_related()
>>> print m.query
SELECT `myapp_membership`.`id`, `myapp_membership`.`person_id`, `myapp_membership`.`date_joined`, `myapp_membership`.`invite_reason`, `myapp_person`.`name`, `myapp_person`.`phonenumber`, `myapp_person`.`city` FROM `myapp_membership` INNER JOIN `myapp_person` ON (`myapp_membership`.`person_id` = `myapp_person`.`name`) WHERE `myapp_membership`.`person_id` = x
>>> m=Membership.objects.filter(person__name='x').values('person','phonenumber').select_related()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/query.py", line 510, in values
return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/query.py", line 766, in _clone
c._setup_query()
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/query.py", line 889, in _setup_query
self.query.add_fields(self.field_names, False)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/sql/query.py", line 1537, in add_fields
"Choices are: %s" % (name, ", ".join(names)))
FieldError: Cannot resolve keyword 'phonenumber' into field. Choices are: date_joined, id, invite_reason, person
हा, मैं व्यक्ति को संबंध के रूप में रखना भूल गया, धन्यवाद एक टन यूजी – sush
@ युजी 'टोमिता' टोमिता क्या होगा यदि मुझे मूल्यों में एक और शामिल करने की आवश्यकता है? उदाहरण के लिए यदि व्यक्ति तालिका में टेबल कंपनी के लिए विदेशी कुंजी है जो पता है कि मैं ढूंढना चाहता हूं। मुझे लगता है कि मुझे मूल्यों में जोड़ना होगा: 'person__company__address'। लेकिन यह मेरे लिए काम नहीं करता .. क्या आपको पता है मुझे क्या करना चाहिए? – GileBrt
@GileBrt जो काम करेगा यदि आपके पास 'पता' नामक फ़ील्ड के साथ एफके के साथ 'कंपनी' के लिए 'व्यक्ति' के साथ 'सदस्य' के साथ 'सदस्यता' मॉडल था। आपके पास थोड़ा अलग मॉडल हो सकता है, इसलिए मैं आपको एक नया प्रश्न पोस्ट करने की सलाह देता हूं। –