Django从不同的模型中获取字段名

Django从不同的模型中获取字段名,django,Django,伙计们, 有没有一种简单的方法可以通过链接联接从不同的模型返回不同的字段名? 我的模型: Class Item(models.Model): item_code = models.CharField(max_length=10) name = models.CharField(max_length=255) ... Class Stock(models.Model): item_code = models.ForeignKey( Item ) useri

伙计们, 有没有一种简单的方法可以通过链接联接从不同的模型返回不同的字段名? 我的模型:

Class Item(models.Model):
    item_code = models.CharField(max_length=10)
    name = models.CharField(max_length=255)
    ...

Class Stock(models.Model):
    item_code = models.ForeignKey( Item )
    userid = models.ForeignKey( User )
    qty = models.IntegerField()
    ...
我想选择“Item.Item\u代码、Item.name、Stock.qty,其中Stock.userid=2和Item.Item\u代码=Stock.Item\u代码”

在Django我该怎么做

盖特

我想选择“Item.Item\u code、Item.name、Stock.qty,其中Stock.userid=2和Item.Item\u code=Stock.Item\u code”

只要从
股票
模型开始,就可以使用一个SQL选择这些特定字段。比如说

q = Stock.objects.select_related('userid', 'item_code').filter(
   userid__id = 2).values('item_code__item_code', 'item_code__name', 'qty')
如果要限制数据,然后限制查询数量,这将很有帮助。如果您对此不感兴趣,请执行以下操作:

q = Stock.objects.filter(userid__id = 2)
for stock in q:
    print stock.item_code.item_code
    print stock.item_code.name
    print stock.qty
这将返回一个查询集,其中仅包含使用
值选择的字段。然后您可以遍历它

PS:Re:您的型号

Class Stock(models.Model):
    item_code = models.ForeignKey( Item )
    userid = models.ForeignKey( User )
    qty = models.IntegerField()
    ...
对于FK关系,最好使用小写的模型名称。例如,你应该写:

Class Stock(models.Model):
    item = models.ForeignKey( Item ) # Changed
    user = models.ForeignKey( User ) # Changed
    qty = models.IntegerField()
    ...
我想选择“Item.Item\u code、Item.name、Stock.qty,其中Stock.userid=2和Item.Item\u code=Stock.Item\u code”

只要从
股票
模型开始,就可以使用一个SQL选择这些特定字段。比如说

q = Stock.objects.select_related('userid', 'item_code').filter(
   userid__id = 2).values('item_code__item_code', 'item_code__name', 'qty')
如果要限制数据,然后限制查询数量,这将很有帮助。如果您对此不感兴趣,请执行以下操作:

q = Stock.objects.filter(userid__id = 2)
for stock in q:
    print stock.item_code.item_code
    print stock.item_code.name
    print stock.qty
这将返回一个查询集,其中仅包含使用
值选择的字段。然后您可以遍历它

PS:Re:您的型号

Class Stock(models.Model):
    item_code = models.ForeignKey( Item )
    userid = models.ForeignKey( User )
    qty = models.IntegerField()
    ...
对于FK关系,最好使用小写的模型名称。例如,你应该写:

Class Stock(models.Model):
    item = models.ForeignKey( Item ) # Changed
    user = models.ForeignKey( User ) # Changed
    qty = models.IntegerField()
    ...
  • 首先,更改文件名
  • 仔细阅读这篇文章

  • 首先,更改文件名
  • 仔细阅读这篇文章

  • 您还可以使用以下选项:

    Stock.objects.filter(user=2).values('item__item_code', 'item__name')
    
    您还可以使用以下选项:

    Stock.objects.filter(user=2).values('item__item_code', 'item__name')