我有以下查询,效果很好:
campaignFixtures = UserSelection.objects.select_related().filter(user=currentUserID,campaignno=currentCampaignNo).order_by('fixtureid__fixturedate')[:1]
Run Code Online (Sandbox Code Playgroud)
但是,我需要从另一个表中过滤字段,如下所示:
campaignFixtures = UserSelection.objects.select_related().filter(user=currentUserID,campaignno=currentCampaignNo,straightredfixture__fixturematchday=18).order_by('fixtureid__fixturedate')[:1]
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
Cannot resolve keyword 'straightredfixture' into field. Choices are: campaignno, fixtureid, fixtureid_id, teamselection1or2, teamselectionid, teamselectionid_id, user, user_id, userselectionid
Run Code Online (Sandbox Code Playgroud)
型号如下:
class StraightredFixture(models.Model):
fixtureid = models.IntegerField(primary_key=True)
home_team = models.ForeignKey('straightred.StraightredTeam', db_column='hometeamid', related_name='home_fixtures')
away_team = models.ForeignKey('straightred.StraightredTeam', db_column='awayteamid', related_name='away_fixtures')
fixturedate = models.DateTimeField(null=True)
fixturestatus = models.CharField(max_length=24,null=True)
fixturematchday = models.ForeignKey('straightred.StraightredFixtureMatchday', db_column='fixturematchday')
spectators = models.IntegerField(null=True)
hometeamscore = models.IntegerField(null=True)
awayteamscore = models.IntegerField(null=True)
homegoaldetails = models.TextField(null=True)
awaygoaldetails = models.TextField(null=True)
hometeamyellowcarddetails = models.TextField(null=True)
awayteamyellowcarddetails = models.TextField(null=True)
hometeamredcarddetails = models.TextField(null=True)
awayteamredcarddetails = models.TextField(null=True)
soccerseason …Run Code Online (Sandbox Code Playgroud) 如何获取用户在详细信息中使用的详细信息?我知道在视图中我可以做到:
currentUser=request.user
但是,如果我在表单中使用它,那么我得到以下错误"'请求'未定义".
class SelectTwoTeams(BootstrapForm):
currentUser=request.user
date_joined = currentUser.date_joined.replace(tzinfo=pytz.utc)
timeless30 = datetime.datetime.now() - datetime.timedelta(seconds=3610)
timeless30 = timeless30.replace(tzinfo=pytz.utc)
if date_joined > timeless30:
currentCharities = forms.ModelChoiceField(queryset=Charity.objects.filter(enabled=1), empty_label=None, widget=forms.Select(attrs={"class":"select-format"}))
team1 = forms.ModelChoiceField(queryset=StraightredTeam.objects.none(), empty_label=None,
widget=forms.Select(attrs={"class":"select-format"}))
team2 = forms.ModelChoiceField(queryset=StraightredTeam.objects.none(), empty_label=None,
widget=forms.Select(attrs={"class":"select-format"}))
Run Code Online (Sandbox Code Playgroud)
非常感谢您提前提供任何帮助.
下面显示了这个表单的初始化,只是它可能有所帮助.我知道如何使用kwargs访问此部分的用户数据:
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
self.currentSelectedTeam1 = kwargs.pop('currentSelectedTeam1', None)
self.currentSelectedTeam2 = kwargs.pop('currentSelectedTeam2', None)
self.currentfixturematchday = kwargs.pop('currentfixturematchday', None)
self.currentCampaignNo = kwargs.pop('currentCampaignNo', None)
super(SelectTwoTeams, self).__init__(*args, **kwargs)
cantSelectTeams = UserSelection.objects.select_related().filter(~Q(fixtureid__fixturematchday=self.currentfixturematchday),campaignno=self.currentCampaignNo, )
if not cantSelectTeams:
queryset = StraightredTeam.objects.filter(currentteam = 1).order_by('teamname')
else: …Run Code Online (Sandbox Code Playgroud) 我有以下表格:
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ('title', 'dob')
labels = {
'dob': ('D.O.B'),
}
Run Code Online (Sandbox Code Playgroud)
它基于以下模型:
class Profile(models.Model):
user = models.OneToOneField(User)
title = models.CharField(max_length=10)
dob = models.DateField(max_length=8)
class Meta:
managed = True
db_table = 'fbf_profile'
Run Code Online (Sandbox Code Playgroud)
HTML部分如下:
<div class="form-group">
<label class="col-sm-5 control-label">{{ profileform.dob.label }}:</label>
<div class="col-sm-7">
{{ profileform.dob }}
<div class="text-danger">
{% for error in profileform.dob.errors %}{{ error }}<br/>{% endfor %}
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
它显示正确,但在当前格式中,用户必须手动输入他们的出生日期。我想要一个日期选择器,允许他们从三个单独的下拉框中选择日、月、年。关于实现这一目标的最佳方法的任何想法?或者,如果有人有更好的选择出生日期的方法,那么我愿意接受想法。
非常感谢,艾伦。
我有以下观点,效果非常好:
@transaction.atomic
def register(request):
next_url = request.POST.get('next', request.GET.get('next', reverse('profile')))
if request.method == 'POST':
form = RegistrationForm(request.POST)
profileform = ProfileForm(request.POST)
if form.is_valid() and profileform.is_valid():
new_user = form.save()
# Login the newly created user.
authenticated_user = authenticate(username=new_user.username,
password=form.cleaned_data['password1'])
login(request, authenticated_user)
return redirect(next_url)
else:
form = RegistrationForm()
profileform = ProfileForm()
return render(request, 'meta/register.html', {'form': form, 'profileform': profileform, 'next': next_url})
Run Code Online (Sandbox Code Playgroud)
但是,当我希望使用以下行保存其他配置文件信息时(位于 new_user = form.save() 行下方):
new_user_profile = profileform.save()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Exception Type: IntegrityError
Exception Value: (1048, "Column 'user_id' cannot be null")
Run Code Online (Sandbox Code Playgroud)
我的配置文件模型如下:
class Profile(models.Model):
user …Run Code Online (Sandbox Code Playgroud)