标签: django-models

选择有效的选择 ModelChoiceField

每当我运行 form.is_valid() 时,我都会收到错误:

选择一个有效的选择。该选择不是可用的选择之一。

我认为这是我所做的:

timeframes = HostTimeFrame.objects.all()
if request.method == 'POST':
    form = SelectDatesForm(request.POST, timeframes=timeframes)
    if form.is_valid():
        pass
else:
    form = SelectDatesForm(timeframes=timeframes)
Run Code Online (Sandbox Code Playgroud)

我的表格是这样做的:

 class SelectDatesForm(forms.Form):
    timeframes = forms.ModelChoiceField(queryset=HostTimeFrame.objects.none(), widget=forms.CheckboxSelectMultiple,
                                        empty_label=None)
    def __init__(self, *args, **kwargs):
        qs = kwargs.pop('timeframes')
        super(SelectDatesForm, self).__init__(*args, **kwargs)
        self.fields['timeframes'].queryset = qs.order_by('start')
Run Code Online (Sandbox Code Playgroud)

我花了几个小时试图找到这个实际验证是在哪里完成的,我找到了它,在这里创建了一个错误。

python django django-models django-forms

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

Django -> 异常值:(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 中的多列中搜索多个关键字

我希望能够输入一个字符串列表,如下所示:

["searchterm1", "searchterm2", "searchtermN"]

并输出数据库中匹配其中一列或匹配其中一列的所有行,依此类推。"searchterm1" "searchterm2"

有办法这样做吗?

django search django-models django-queryset

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

仅选择活动记录 django 查询

在我的 Django 项目中,is_active我的数据库的每个表中都有一个布尔列。每次我或框架访问数据库时,我只希望显示活动记录。实现这一目标的标准方法是什么?当然,我不想检查is_active我所做的每个查询。

python database django django-models django-rest-framework

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

在 Django REST Framework 中更新/放置请求

我是 Django REST Framework 的新手,并在我正在开发的新项目中尝试使用它。因此,根据官方教程,我尝试创建几个 get/post/put 请求,但使用 put 请求时出现以下错误:

预期使用名为“pk”的 URL 关键字参数调用视图 ExampleUpdateView。修复您的 URL 配置,或.lookup_field正确设置视图上的属性。

这是我必需的文件:

models.py

class ExampleModel(models.Model):
    foo_field = models.CharField(primary_key=True, max_length=15)
    bar_field = models.CharField(max_length=30)
    last_updated_by = models.CharField(max_length=15)
    last_updated_on = models.DateTimeField()

    class Meta:
        managed = True
        db_table = 'example_db'
        unique_together = (('foo_field', 'bar_field'),)
Run Code Online (Sandbox Code Playgroud)

serializers.py

class ExampleSerializer(serializers.ModelSerializer):
    class Meta:
        model = ExampleModel
        fields = ('foo_field', 'bar_field', 'last_updated_by', 'last_updated_on')
Run Code Online (Sandbox Code Playgroud)

urls.py

url(r'^get_example/$', views.ExampleCreateView.as_view()),
url(r'^update_example/(?P<pk>\d+)/$',views.ExampleUpdateView.as_view()),
Run Code Online (Sandbox Code Playgroud)

views.py

class ExampleCreateView(generics.CreateAPIView):
    serializer_class = ExampleSerializer
    queryset = ExampleModel.objects.all()

class ExampleUpdateView(generics.UpdateAPIView):
    queryset = ExampleModel.objects.all()
    serializer_class = …
Run Code Online (Sandbox Code Playgroud)

python django rest django-models django-rest-framework

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

为什么 Django DateField 不接受空值?

我有一个模型,其中 DateField 字段的空白 = True 和 null = True。似乎不可能保存日期字段为空值的对象。

class ProjectTask(models.Model):
    actual_start_date = models.DateField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

然后尝试使用 Python 控制台:

p = ProjectTask.objects.all().last()
p.actual_start_date = ""
p.save()
Run Code Online (Sandbox Code Playgroud)

结果是:

venv/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1273, in to_python
    params={'value': value},
django.core.exceptions.ValidationError: ["'' value has an invalid date format. It must be in YYYY-MM-DD format."]
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 3.4、Django 1.9 和 PostgreSQL。

有什么建议么?

django django-models python-3.x

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

如何使用Django和AJAX显示上传的图像

我正在创建一个表单,允许用户选择图像并使用 Django 和 AJAX 上传它。这个过程工作正常,但问题是上传的图像没有显示在屏幕上,但我确实div为其指定了一个。

这些是我遵循的步骤:

  • 创建一个处理上传图像的模型。
  • 为该函数创建路径。
  • 创建上传所选图像的函数。
  • 创建模板和 AJAX 函数。

模型.py:

class photo(models.Model):
    title = models.CharField(max_length=100)
    img = models.ImageField(upload_to = 'img/')
Run Code Online (Sandbox Code Playgroud)

主页.html:

 <form method="POST" id="ajax"  enctype="multipart/form-data">
        {% csrf_token %}
        Img:
        <br />
        <input type="file" name="img">

        <br />
        <br />
        <button id="submit"  type="submit">Add</button>

    </form>



<h1> test </h1>
    <div id="photo">
        <h2> {{ photo.title }}</h2>
        <img src="{{ photo.img.url }}" alt="{{ photo.title }}">
    </div>






 $('#ajax').submit(function(e) {
                e.preventDefault();
                var data = new FormData($('#ajax').get(0));
                console.log(data)

                $.ajax({
                    url: '/upload/', 
                    type: 'POST',
                    data: data, …
Run Code Online (Sandbox Code Playgroud)

javascript django image-uploading django-models

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

Django REST 框架。我如何在 csv 中导出模型

我有以下型号:

class Student(models.Model):
   first_name = models.CharField(verbose_name='student first name', max_length=64)
   last_name = models.CharField(verbose_name='student last name', max_length=64)
   email = models.EmailField()

class Meta:
    db_table = 'student'

def __str__(self):
    return self.first_name + ' ' + self.last_name

class Course(models.Model):
   name = models.CharField(max_length=255)
   description = models.TextField()
   start_date = models.DateField(null=True, blank=True, default=None)
   end_date = models.DateField(null=True, blank=True, default=None)

class Meta:
    db_table = 'course'

def __str__(self):
    return self.name

class CourseParticipant(models.Model):
    course = models.ForeignKey(Course, related_name='courses', on_delete=models.CASCADE)
    student = models.ForeignKey(Student, related_name='student_name', on_delete=models.CASCADE)
    completed = models.BooleanField(null=False, default=False)

    class Meta:
        db_table = 'course_participant' …
Run Code Online (Sandbox Code Playgroud)

django django-models export-to-csv django-rest-framework

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

一个 Django DetailView 中的两个模型并按它们之间的关系进行过滤

我有个问题。在我的中,DetailView我想放置来自两个模型的数据。此外,我想过滤它们,我的scenario-detail只有与特定场景相关的评论,由ForeignKey->Scenario相关。

我的views.py

class ScenarioDetailView(LoginRequiredMixin, DetailView):
    model = Scenario

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comments'] = Comment.objects.all()
        return context
Run Code Online (Sandbox Code Playgroud)

scenario_detail.html有一个简单的{{ comments }}

我考虑在 中过滤我的评论对象views.py,例如:Comment.objects.get(commentScenario=Scenario.id)但它根本不起作用。

我的models.py

class Scenario(models.Model):
    scenarioTitle = models.CharField(max_length=256)
    scenarioArea = models.ForeignKey(ScenarioArea, on_delete=models.CASCADE)
    scenarioAuthor = models.ForeignKey(User, on_delete=models.CASCADE)
    scenarioDate = models.DateTimeField(default=timezone.now)
    scenarioDescription = models.TextField()

    def __str__(self):
        return self.scenarioTitle

    def get_absolute_url(self):
        return reverse('scenario-detail', kwargs={'pk': self.pk})

class Comment(models.Model):
    commentText = models.CharField(max_length=256)
    commentScenario = models.ForeignKey(Scenario, on_delete=models.CASCADE)
    commentAuthor = …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views django-generic-views

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

使用 get_object_or_404 只获取一个字段而不是 django Rest 框架中模型中指定的所有字段?

我试图从 get_object_or_404 中获取一个字段,但它似乎对我不起作用。

我正在使用 django 的默认身份验证应用程序中的用户模型。这是我的序列化器:

class UserSerializer(serializers.Serializer):
    username = serializers.CharField(max_length=150)
    email = serializers.EmailField(max_length=254)
    first_name = serializers.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

class UserView(APIView):

    def get(self, request, id=None):

        if id:
               data = 
               get_object_or_404(User.objects.only('username'), 
               id=id)
            serializer = UserSerializer(data, many=False)
            return Response(serializer.data)
        else:
                data = get_list_or_404(User)
            serializer = UserSerializer(data, many=True)
            return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

即使在使用这个之后,get_object_or_404(User.objects.only('username'), id=id)我仍然得到序列化器中指定的所有字段,而不仅仅是用户名。

这是当我从邮递员调用它时将 id 传递给 api 时得到的响应。

{
    "username": "admin",
    "email": "admin@email.com",
    "first_name": ""
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

{
    "username": "admin",
}
Run Code Online (Sandbox Code Playgroud)

django serialization django-models django-views django-rest-framework

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