每当我运行 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)
我花了几个小时试图找到这个实际验证是在哪里完成的,我找到了它,在这里创建了一个错误。
我有以下观点,效果非常好:
@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) 我希望能够输入一个字符串列表,如下所示:
["searchterm1", "searchterm2", "searchtermN"]
并输出数据库中匹配其中一列或匹配其中一列的所有行,依此类推。"searchterm1" "searchterm2"
有办法这样做吗?
在我的 Django 项目中,is_active我的数据库的每个表中都有一个布尔列。每次我或框架访问数据库时,我只希望显示活动记录。实现这一目标的标准方法是什么?当然,我不想检查is_active我所做的每个查询。
我是 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) 我有一个模型,其中 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 和 AJAX 上传它。这个过程工作正常,但问题是上传的图像没有显示在屏幕上,但我确实div为其指定了一个。
这些是我遵循的步骤:
模型.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) 我有以下型号:
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) 我有个问题。在我的中,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
我试图从 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
django ×10
django-models ×10
python ×4
django-views ×2
database ×1
django-forms ×1
javascript ×1
python-3.x ×1
rest ×1
search ×1