![](/img/trans.png)
[英]How to filter users depending on a models.charfield choices in django
[英]Django: Limit choices in a models.Charfield by PrimaryKey
今晚我的另一個問題,我希望我能充分解釋:
我的“models.py”中有三個類:
class Customer(models.Model):
full_name = models.CharField(max_length=100, null=True, unique=True)
short_name = models.CharField(max_length=8, null=True, unique=True)
class Project(models.Model):
customer = models.ForeignKey(Customer, null=False, on_delete=models.CASCADE)
name = models.CharField(max_length=255, null=True, unique=True)
...
class Entry(models.Model):
user = models.ForeignKey(User, null=True, blank=False, on_delete=models.CASCADE)
customer = models.ForeignKey(Customer, null=True, blank=False, on_delete=models.CASCADE)
project = models.ForeignKey(Project, null=True, blank=False, on_delete=models.CASCADE)
date = models.DateField()
shortText = models.CharField(max_length=100, null=False, blank=False)
...
注意:一位客戶可以擁有多個項目。
在我的一個網站上,每個“客戶”旁邊都有一個帶有按鈕的表格。 計划是,它應該引導我到另一個頁面,如果用戶可以編寫並保存他的“條目”。 現在,按鈕/鏈接中的 PrimaryKey 包含“客戶”的 ID。
我的問題是:是否可以將“項目”(在下拉菜單中)的選擇限制為已單擊的“客戶”? 並且創建一個 ModelForm 是正確的做法嗎?
謝謝大家,晚安!
好吧,不知道這是否是正確的方法,但我找到了解決我的問題的方法:
為我的視圖功能寫了一個“forms.ModelForm”......
class EntryForm(ModelForm): class Meta: model = Entry fields = '__all__' def __init__(self, *args, pk, **kwargs): super().__init__(*args, **kwargs) self.fields['project'].queryset = Project.objects.filter(customer_id=pk)
將我的 ModelForm 插入視圖功能...
def WriteEntry(request, pk): form = EntryForm(pk=pk) if request.method =='POST': form = EntryForm(request.POST, pk) if form.is_valid(): form.save()... context = {'form': form} return render(request, '...html', context)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.