小编Ala*_*gey的帖子

Django 使用 select_lated() 进行过滤

我有以下查询,效果很好:

    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)

sql django django-models

3
推荐指数
1
解决办法
5808
查看次数

Django:表单中的request.user

如何获取用户在详细信息中使用的详细信息?我知道在视图中我可以做到:

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)

django django-forms

2
推荐指数
1
解决办法
2936
查看次数

Django - 出生日期的日期选择器

我有以下表格:

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)

它显示正确,但在当前格式中,用户必须手动输入他们的出生日期。我想要一个日期选择器,允许他们从三个单独的下拉框中选择日、月、年。关于实现这一目标的最佳方法的任何想法?或者,如果有人有更好的选择出生日期的方法,那么我愿意接受想法。

非常感谢,艾伦。

django date

1
推荐指数
1
解决办法
4978
查看次数

Django -&gt; 异常值:(1048,“列‘user_id’不能为空”)

我有以下观点,效果非常好:

@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)

django django-models

0
推荐指数
1
解决办法
6092
查看次数

标签 统计

django ×4

django-models ×2

date ×1

django-forms ×1

sql ×1