尝试获取weight
serializer 上的字段值时WeightHistorySerializer
QuerySet
出现异常
Got AttributeError 。序列化器字段可能命名不正确,并且与实例上的任何属性或键都不匹配。原始异常文本是:'QuerySet' 对象没有属性 'weight'。
当我尝试检索数据时。
模型.py
class WeightHistory(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
weight = models.FloatField(null=False, blank=False)
created_at = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
序列化程序.py
class WeightHistorySerializer(serializers. HyperlinkedModelSerializer):
class Meta:
model = WeightHistory
fields = (
'id',
'weight',
'user_id',
'created_at'
)
read_only_fields = ('id',)
Run Code Online (Sandbox Code Playgroud)
视图.py
def weight_history_detail(request, user_id):
# Retrieve, update or delete a weight_history/detail.
try:
weight_history = WeightHistory.objects.filter(user_id=user_id)
except WeightHistory.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = WeightHistorySerializer(weight_history)
return Response(serializer.data) …
Run Code Online (Sandbox Code Playgroud) 我首先进行了category
增删改查,然后进行了product
与 的多对多关系的增删改查category
。
models.py
( category
):
class Category(models.Model):
name = models.CharField(max_length=191, blank=False, null=False)
description = models.TextField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
models.py
( product
):
class Product(models.Model):
product_code = models.CharField(max_length=191, blank=False, null=False)
name = models.CharField(max_length=191, blank=False, null=False)
description = models.TextField(blank=False, null=False)
price = models.DecimalField(max_digits=19, decimal_places=2)
photo = models.ImageField(upload_to='pictures/products/', max_length=255, null=False, blank=False)
category = models.name = models.ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud)
如何达到以下结果:
{
"categories": [
{
"id": 1,
"name": "Indoor Muscle Training",
"description": null,
"products":{
"name":"product_name",
"code":"product_code"
}
},
{
"id": 2,
"name": …
Run Code Online (Sandbox Code Playgroud) 我正在使用 laravel soketi 包。我不想使用 laravel-echo 进行客户端连接。所以,我正在用 firecamp 进行测试。但无法连接。
Soketi 已启动并运行
Server is up and running!
The Websockets server is available at 127.0.0.1:6001
The HTTP API server is available at http://127.0.0.1:6001
The /usage endpoint is available on port 9601.
Run Code Online (Sandbox Code Playgroud)
在 firecamp 中连接时我使用 url asws://localhost:6001/
但无法连接。
那么,如何连接呢?
我使用 django-rest-auth 进行身份验证并使用它提供的令牌进行授权。我也使用了 django-rest 提供的一些 permission_class。在我的每个方法之前,我都在 views.py 中进行了跟踪。
视图.py
@api_view(['GET'])
@authentication_classes((TokenAuthentication))
@permission_classes((permissions.IsAuthenticated,))
Run Code Online (Sandbox Code Playgroud)
我如何在测试这些 api 时进行身份验证以访问 views.py 中的该方法。因为没有身份验证它会禁止 403。如何在测试中模拟身份验证。