在我的应用程序的特定用例中,我想做一些逻辑(根据用户选择的内容而定-并因此通过API url传递),以创建并返回模型。
在我的应用程序中,我有一个简单的测试模型和问题模型(每个问题都有一个概念:
class Question(models.Model):
text = models.CharField(max_length=255, null=False)
concept = models.CharField(max_length=255, null=False)
class Test(models.Model):
num_questions = models.IntegerField()
questions = models.ManyToManyField(Question)
我希望用户能够像这样XXX/api/v1/test/create/Math
进行创建,这将使他们返回带有随机选择的与数学有关的问题的测试。
在我的网址中,我明确指定了path('test/create/<str:concept>', CreateTestView.as_view(), name="test-create="),
但是,当我尝试引用它时,它不允许我传递它(未定义概念错误)
class CreateTestView(generics.ListCreateAPIView, concept):
test = Test()
... add random questions to test
queryset = test
serializer_class = TestSerializer
答案 0 :(得分:2)
如果您要使用<str:concept>
参数。您需要在所需视图的方法定义中指定该参数(发布,获取,修补程序...)
使用该参数。
class CreateTestView(generics.ListCreateAPIView):
def post(self, request, concept, *args, **kwargs):
# use concept param
def get(self, request, concept, *args, **kwargs):
# use concept param
def patch(self, request, concept, *args, **kwargs):
# use concept param
# all the methods where you want to use the concept param