Onlardan birinde fk ile iki tablo var.django queryset anahtarıyla iki tabloya nasıl bağlanır
veli:
+----+---------+
| Id | Name |
+----+---------+
| 1 | Test #1 |
| 2 | Test #2 |
| 3 | Test #3 |
+----+---------+
ve çocuk: Ben biçimli anahtarlar tarafından tabloyu birleştirmek için bir Sorgu Kümesi yapmak gerekir
+----+---------+-----------+
| Id | Traffic | parent_id |
+----+---------+-----------+
| 1 | 1000 | 1 |
| 2 | 2000 | 3 |
+----+---------+-----------+
, gibi bir şey:
select p.parent_id, p.traffic, c.name from child c, parent p where c.parent_id = p.id
var mı Bunu yapmak için herhangi bir basit yol?
EDIT: Tamam, gerçek örneğe sahip olmam gerektiğini göstereceğim.
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
ve:
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
Form: ProjectNewForm dan
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',
]
benim şablona bir selectbox göstermek gerekir
("sunucu" alanına iki model Sunucu ve Kaynaklar vardır) Server modelinden public_name, seçenek etiketi için metin ve bir değer gibi Resources.server.id gibi.
Modelde ForeignKey var mı? Tanımları göster. –
@Daniel Roseman, emin sınıfı Çocuk (modeller. Model): prnt = models.ForeignKey (Üst, on_delete = models.CASCADE) – johndark
Modelin geri kalanıyla birlikte başlamak için bunu göndermelisiniz. Ama hala neyi başarmak istediğini anlamıyorum; Bu birleştirilen sorguyla ne yapmayı umuyorsunuz? –