我是DRF的新手.我有Record模型,看起来像这样:
class Records(models.Model):
owner = models.ForeignKey(User, null=True)
activity = models.ForeignKey(Activity, null=True)
time_start = models.DateTimeField(null=True)
time_end = models.DateTimeField(null=True)
...
Run Code Online (Sandbox Code Playgroud)
RecordSerializer就是这样一个:
class RecordSerializer(serializers.ModelSerializer):
now = datetime.today()
owner = serializers.Field(source='owner.username')
time_start = serializers.DateTimeField(source='now')
class Meta:
model = Records
fields = ("owner", "activity", "time_start")
Run Code Online (Sandbox Code Playgroud)
这就是观点:
class StartApiView(generics.CreateAPIView):
model = Records
serializer_class = RecordSerializer
def pre_save(self, obj):
obj.owner = self.request.user
Run Code Online (Sandbox Code Playgroud)
POST请求是从Backbone发送的,它包含一个带有活动ID的字段,例如"{activity:12}".如果我希望视图保存Record并将活动设置为id为12的Activity,我该怎么办?
大家好我无法解决这个问题:如果我将DEBUG变为False,我就无法运行manage.py runserver:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
Run Code Online (Sandbox Code Playgroud)
然后,假设我向ALLOWED_HOSTS添加了一些内容:
ALLOWED_HOSTS = ['*']
or
ALLOWED_HOSTS = ['localhost']
or
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
Run Code Online (Sandbox Code Playgroud)
现在,我可以做'manage.py runserver',但静态文件不起作用.奇怪的.
如果我将DEBUG转为True,那么它将ALLOWED_HOSTS设置为nothing,localhost或*.所以,我猜这个问题与DEBUG有关.我不明白.
我想知道什么时候应该使用serializer.is_valid(raise_exception=True)?如果我没有实现任何自定义验证,是否需要使用该raise_exeption=True标志?如果我的API没有提高怎么办ValidationErrors,这是不好的做法吗?如果是,那么为什么是默认值raise_exception=False?我只是想知道是否应该将其设置为True。谢谢你的建议。
创建接受浮点数并具有与 NumberInput 相同功能的 django 表单字段的最佳方法是什么?我的意思是使用相同的功能是 django 的 NumberInput 在输入旁边有箭头,可以增加或减少数字,它也接受 min_value 和 max_value。如果我使用 TextInput 小部件,我将无法获得此功能。如果我使用 NumberInput 小部件,它将不适用于浮点数:
homework = forms.FloatField(required=False, max_value=10, min_value=0, widget=NumberInput(attrs={'id': 'form_homework'}))
Run Code Online (Sandbox Code Playgroud)

当我单击 + - 按钮时,它不包括浮点数(即 5.5)。此外,如果我想将实际浮点数(作业成绩)设置为初始值(使用 Jquery),它根本不显示浮点数。
欢迎任何建议。
编辑:
如果我做:
class NumberInput(TextInput):
input_type = 'number'
homework = forms.FloatField(required=False, max_value=10, min_value=0,
widget=NumberInput(attrs={'id': 'form_homework', 'step': '0.1'}))
Run Code Online (Sandbox Code Playgroud)
'step' 属性有效,但 max_value/min_value 无效。如果我不以这种方式定义 NumberInput 并使用常规的 NumberInput,则它根本不起作用。
这是一个简单的问题:
是否有意义,或者是否可以select_related像这样链接查询?:
queryset = a.objects.filter(...).select_related("b").select_related("c")
Run Code Online (Sandbox Code Playgroud)
A具有B的ForeignKey,B具有C的ForeignKey。我的模型如下所示:
class A(models.Model):
b = models.ForeignKey(B)
class B(models.Model):
c = models.ForeignKey(C)
Run Code Online (Sandbox Code Playgroud) 有什么区别
return TemplateResponse(request, self.template_name, context=context)
Run Code Online (Sandbox Code Playgroud)
和
return render(request, self.template_name, context=context)
Run Code Online (Sandbox Code Playgroud)
是否有任何情况我应该使用其中一个而不是另一个?
我需要做这样的事情:
quito = queryset.get(lugar="Quito")
queryset.pop(quito)
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
'QuerySet' object has no attribute 'pop'
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
当我运行时:
pip3 install django==3.0.5
Run Code Online (Sandbox Code Playgroud)
我收到错误
ERROR: Could not find a version that satisfies the requirement django==3.0.5 (from versions: 1.1.3, ... 2.2.11, 2.2.12) ERROR: No matching distribution found for django==3.0.4
Run Code Online (Sandbox Code Playgroud)
我需要在某处更新一些参考资料,但我不确定如何更新。请帮忙。
我一直在尝试将New Relic添加到我的应用程序中,但是我收到此错误:
at=error code=H10 desc="App crashed"
Run Code Online (Sandbox Code Playgroud)
错误来自Procfile行,我声明了Web进程.我按照文件说明这里和这里说明过程应该像这样声明:
web: newrelic-admin run-program python manage.py run_gunicorn -b "0.0.0.0:$PORT" -w 3
Run Code Online (Sandbox Code Playgroud)
它不起作用.
我应该如何在Procfile for New Relic中声明Web进程?
我正在使用Django.
如何在Heroku上获取数据并创建一个可以在本地加载的夹具?heroku run python manage.py dumpdata --natural > data.json是命令,但我该如何下载文件?