在我的模型(费用)中,我定义了类别,希望将其用作其他应用程序(食品)的创建形式中的预设/默认值。
奇怪的是,当前代码输出的是用户名列表,而不是费用类别(以及我要的行,但我想要的是项目而不是费用模型的expense_category)。
如果我在ModelChoiceField查询集的末尾应用.all(),我什么也得不到(可能是我做错了事)。
Foods App-> Forms.py
class FoodForm(forms.ModelForm):
item = forms.ModelChoiceField(queryset=Expense.objects.filter(expense_type='Food'))
class Meta():
model = Food
fields = ['item','servings','calories','create_date']
Foods App-> views.py
class FoodCreateView(LoginRequiredMixin, CreateView):
model = Food
fields = ['item','servings','calories','create_date']
login_url = 'accounts/login.html'
# Filter by User
def form_valid(self, form):
form.instance.user = self.request.user
return super(FoodCreateView, self).form_valid(form)
费用应用-> models.py
class Expense(models.Model):
BILLS = 'Bills'
FOOD = 'Food'
PERSONAL = 'Personal Care'
MISC = 'Misc'
CATEGORY = (
('Food','Food'),
('Bills','Bills'),
('Personal Care','Personal Care'),
('Misc','Misc'),
)
user = models.ForeignKey(User, related_name='exp_user')
amount = models.IntegerField()
item = models.CharField(max_length= 50)
expense_type = models.CharField(max_length =15, choices=CATEGORY, default=FOOD)
create_date = models.DateField(default=datetime.date.today)
如果可以按“食物”的费用类型过滤,然后按item
我还猜测以表格形式进行此操作可能不合适。
我认为我需要添加类似于
的内容self.fields['item'] = Expense.objects.filter(expense_type = 'Food')
,但是在被用户过滤之后,我不确定在哪里或如何使用。任何文件或其他阅读资料都肯定会有所帮助,因为我敢肯定我会错过一些明显的东西。
谢谢