可能重复:
以Django格式获取请求数据
我的访客模型的一部分:
class Guest(models.Model):
event = models.ForeignKey(Event, related_name='guests')
user = models.ForeignKey(User, unique=True, related_name='guests')
...
Run Code Online (Sandbox Code Playgroud)
表格以获得来宾的回复:
class RSVPForm(forms.Form):
attending_d= forms.ChoiceField(choices=VISIBLE_ATTENDING_CHOICES, initial='yes', widget=forms.RadioSelect)
attending_b = forms.ChoiceField(choices=VISIBLE_ATTENDING_CHOICES, initial='yes', widget=forms.RadioSelect)
number_of_guests = forms.IntegerField(initial=0)
comment = forms.CharField(max_length=255, required=False, widget=forms.Textarea)
....
def save(self):
guest = self.guest_class.objects.get(user=1)
guest.attending_status_d = self.cleaned_data['attending_d']
guest.attending_status_b = self.cleaned_data['attending_b']
guest.number_of_guests = self.cleaned_data['number_of_guests']
guest.comment = self.cleaned_data['comment']
guest.save()
return guest
Run Code Online (Sandbox Code Playgroud)
问题出在save方法中.如何将访客与当前登录的用户相关联?
guest = self.Guest.objects.get(user=1)
Run Code Online (Sandbox Code Playgroud)
而不是user=1我需要具有当前登录用户的id.
谢谢!
新手问题:我需要从views.py中的方法接受表单中的参数,但它给了我麻烦.在视图中,我创建了一个包含以下代码段的方法:
def scan_page(request):
myClient = request.user.get_profile().client
form = WirelessScanForm(client = myClient) # pass parameter to the form
Run Code Online (Sandbox Code Playgroud)
在forms.py中我定义了以下形式:
class WirelessScanForm(forms.ModelForm):
time = forms.DateTimeField(label="Schedule Time", widget=AdminSplitDateTime())
def __init__(self,*args,**kwargs):
myClient = kwargs.pop("client") # client is the parameter passed from views.py
super(WirelessScanForm, self).__init__(*args,**kwargs)
prob = forms.ChoiceField(label="Sniffer", choices=[ x.sniffer.plug_ip for x in Sniffer.objects.filter(client = myClient) ])
Run Code Online (Sandbox Code Playgroud)
但django一直给我错误说:( TemplateSyntaxError: Caught NameError while rendering: name 'myClient' is not defined查询中发生此错误)
我担心这里会有一些愚蠢的东西,但我无法弄明白为什么.请帮忙,谢谢.