我有这两个模型
const dailyStockUpdatedBranch = await Branch.findOneAndUpdate(
{ _id: branchId },
{
// $pull: {
// 'records.$[record].stocks.$[stock]': stockEntry,
// },
$set: {
region_id:
'records.$[record].stocks.$[stock].quantity.P[0]',
},
},
{
arrayFilters: [
{ 'record.date': date },
{ 'stock.type': 'DAILY' },
],
projection: {
'records.stocks': 1,
'records.date': 1,
totals: 1,
},
}
);
我要从class Upload(models.Model):
name=models.CharField(max_length=100)
email=models.EmailField(max_length=50)
class Text(models.Model):
texts=models.CharField(max_length=500,null=True,blank=True)
upload_text=models.ForeignKey(Upload, blank=True, null=True, on_delete = models.CASCADE)
过滤texts
时从Text
获得name
。所以我想显示Upload
,name
和email
。
我知道有人问过previously这个问题,我也在做同样的事情,但是出错了。
我已经尝试过了
texts
但这给我一个错误
data=Text.objects.filter(upload__name__icontains=query)
我也尝试过这个。
Cannot resolve keyword 'upload' into field. Choices are: id, texts, upload_text, upload_text_id
但是我无法在jinja2模板中同时显示两者。
data=Upload.objects.filter(name__icontains=query)
data1=Text.objects.filter(upload_text__in=data)
答案 0 :(得分:1)
您有一个小错误,而不是upload__name
其upload_text__name
:
data=Text.objects.filter(upload_text__name__icontains=query)
然后,您的模板:
{% for text in data %}
{{ text.texts }} {{ text.upload_text.name }} | {{text.upload_text.email}}
答案 1 :(得分:0)
我认为您使事情变得太复杂了,您可以使用以下方法获取对象:
class BaseModel extends ChangeNotifier {
ViewState _state = ViewState.idle;
ViewState get state => _state;
void setState(ViewState viewState) {
_state = viewState;
notifyListeners();
}
}
然后在模板中,您可以遍历数据,并使用data = Upload.objects.filter(name__icontains=query).prefetch_related('text_set')
获得相关的Text
:
.text_set