【发布时间】:2016-07-14 05:51:19
【问题描述】:
我有两张桌子,其中一张有 fk。
父母:
+----+---------+
| Id | Name |
+----+---------+
| 1 | Test #1 |
| 2 | Test #2 |
| 3 | Test #3 |
+----+---------+
和孩子:
+----+---------+-----------+
| Id | Traffic | parent_id |
+----+---------+-----------+
| 1 | 1000 | 1 |
| 2 | 2000 | 3 |
+----+---------+-----------+
我需要为我的表单创建一个查询集以通过键连接表,例如:
select p.parent_id, p.traffic, c.name from child c, parent p where c.parent_id = p.id
有什么简单的方法吗?
编辑: 好的,我会展示我需要的真实样本。 服务器和资源有两种模式:
class Server(models.Model):
public_name = models.CharField(_(u'public name'),
max_length=60,
blank=False,
null=False,
unique=False)
server_ident = models.CharField(_(u'server identificator'),
max_length=100,
blank=False,
null=False,
unique=True)
class Meta:
db_table = 'server'
ordering = ('public_name',)
abstract = False
def __unicode__(self):
return self.public_name
和:
class Resources(models.Model):
server = models.ForeignKey(Server,
on_delete=models.CASCADE)
traffic_left = models.FloatField(_(u'traffic left'),
blank=False,
null=False,
default=0.0)
requests_left = models.IntegerField(_(u'requests left'),
blank=False,
null=False,
default=0)
class Meta:
db_table = 'resources'
abstract = False
表格:
class ProjectNewForm(forms.Form):
servers_query = Resources.objects.all()........
project_name = forms.CharField(required=True,
min_length=2,
max_length=14,
label=_(u'Project name'))
project_description = forms.CharField(required=True,
max_length=2000,
widget=forms.Textarea(
attrs={'rows': 4}
),
label=_(u'Project description'))
server = forms.ModelChoiceField(queryset=servers_query,
required=True,
initial=0,
widget=forms.Select,
label=_(u'Server'))
class Meta:
fields = [
'project_name',
'project_description',
'server',
]
我需要在我的模板上显示一个选择框(ProjectNewForm 中的“服务器”字段),其中包含来自服务器模型的 public_name,例如选项标签的文本和 Resources.server.id,例如值。
【问题讨论】:
-
模型中有外键吗?显示定义。
-
@Daniel Roseman,确保类 Child(models.Model): prnt = models.ForeignKey(Parent, on_delete=models.CASCADE)
-
您应该先发布它,以及其他模型。但我还是不明白你想要达到什么目的;您希望对这个联合查询做什么?
-
@Daniel Roseman 我需要在我的模板中有一个选择框来显示 parent.name 之类的文本和 parent_id 之类的子表中的值
-
你说的太含糊了。请编辑问题以显示输出的确切示例。
标签: python django django-forms django-queryset