使用DRF,我有一个用户模型,其中包括一个地址字段,这是一个文本字段。当我在API浏览器中查看UserList终结点时,地址如下所示:
"address": "<django.db.models.fields.TextField>",
从文档中,我认为我需要在序列化程序中使用以下内容:
address = serializers.CharField(
max_length=1000,
style={'base_template': 'textarea.html'},
)
...但这并没有解决问题。PhoneNumberField类型字段也会发生同样的情况:
"phone_number": "<phonenumber_field.modelfields.PhoneNumberField>",
我在序列化程序中将它们重新定义为CharField。
更新:
我的模型和序列化程序比通常要复杂一些,因为我将地址、国家和三个电话字段拆分为单独的类,以便它们可以包含在几个不同的模型中。
我的用户模型:
class User(AbstractUser, AddressPhoneModelMixin):
objects = UserProfileManager()
USERNAME_FIELD = 'email'
type = models.CharField(
max_length=25,
)
title = models.CharField(
max_length=100,
blank=True,
null=True,
)
timezone = models.CharField(
max_length=50,
)
birthdate = models.DateTimeField(
blank=True,
null=True,
)
is_verified = models.BooleanField(
default=False,
)
email = models.EmailField(
unique=True,
db_index=True,
)
这是地址和电话字段的模型类:
class AddressPhoneModelMixin(object):
address = models.TextField(
blank=True,
null=True,
)
country = models.ForeignKey(
Country,
on_delete=models.SET_NULL,
blank=True,
null=True,
)
phone_number = PhoneNumberField(
blank=True,
null=True,
)
mobile_number = PhoneNumberField(
blank=True,
null=True,
)
fax_number = PhoneNumberField(
blank=True,
null=True,
)
class Meta:
abstract = True
用户序列化程序:
class UserSerializer(AddressPhoneSerializerMixin, serializers.ModelSerializer):
permission_classes = (permissions.IsAuthenticated,)
url = serializers.HyperlinkedIdentityField(view_name="users:user-detail")
class Meta:
model = User
fields = (
'url',
'id',
'type',
'username',
'first_name',
'last_name',
'full_name',
'email',
'address',
'country',
'phone_number',
'mobile_number',
'fax_number',
'is_superuser',
'is_staff',
'is_active',
'is_verified',
'date_joined',
'last_login',
)
地址和电话字段序列化程序:
class AddressPhoneSerializerMixin(serializers.Serializer):
address = serializers.CharField(
max_length=1000,
style={'base_template': 'textarea.html'},
)
country = serializers.HyperlinkedIdentityField(
view_name='countries:country-detail'
)
phone_number = serializers.CharField(
max_length=31,
)
mobile_number = serializers.CharField(
max_length=31,
)
fax_number = serializers.CharField(
max_length=31,
)
class Meta:
abstract = True
最后,用户可以查看:
class UserList(ListCreateAPIView):
permission_classes = (permissions.IsAuthenticated,)
queryset = User.objects.all()
serializer_class = UserSerializer
class UserDetail(RetrieveUpdateAPIView):
permission_classes = (permissions.IsAuthenticated,)
queryset = User.objects.all()
serializer_class = UserSerializer
我将包括API浏览器中的一个示例,其中包括所有相关字段。请注意,国家/地区显示与预期一致。
"email": "admin@virticl.api",
"address": "<django.db.models.fields.TextField>",
"country": "http://virticl.api/countries/1/",
"phone_number": "<phonenumber_field.modelfields.PhoneNumberField>",
"mobile_number": "<phonenumber_field.modelfields.PhoneNumberField>",
"fax_number": "<phonenumber_field.modelfields.PhoneNumberField>",
您的抽象模型混合应该是一个模型。模型
子类:
class AddressPhoneModelMixin(models.Model):
...
当继承从右向左处理时,您还需要按照用户模型的基类顺序将其放在左边:
class User(AddressPhoneModelMixin, AbstractUser):
...
注意:要指定序列化程序字段,可以使用字段='\uuuuu all\uuuu'
,而不是单独列出它们。如果只缺少一个或两个,可以使用exclude
。
问题内容: 我已经成功完成了在浏览器中而不是“打开/保存”对话框中显示PDF文件的代码。现在,我一直试图在浏览器中显示Word文档。我想在Firefox,IE7+,Chrome等中显示Word文档。 有人可以帮忙吗?在浏览器中显示Word文档时,总是会出现“打开/保存”对话框。我想使用JavaScript实现此功能。 问题答案: 目前没有浏览器具有呈现Word文档所必需的代码,据我所知,当前也没有
我正在测试Google Sheets API,网址为: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append 我正在使用部分来填写请求参数并执行请求(在工作表中添加一行)。 我已经按照在这里: https://developers.google.com/sheets/api/qui
Localhost很好,但上传到服务器时不工作 %pdf-1.3 1 0 obj<>Endobj2 0 obj<>Endobj3 0 obj<>>/Mediabox[0.000 0.000 595.280 841.890]>>Endobj4 0 obj<>stream x 2 300 p@&b m-l l,br b 5 jr k drr f b k endstream endobj 8 0 obj
问题内容: 我的站点转到登录页面,我想在用户登录时重定向到另一个页面。我有一个“ POST”方法,该方法将“用户名”和“密码”发送到服务器,服务器检查用户名和密码存在。 这是我的方法 客户端能够正确发布用户名和密码,并检查其是否存在…我只是不知道如何使它呈现(重定向到???)一个新页面 问题答案: 你可以 … 重定向,(使用,将任何需要的值作为查询参数传递。例如 或者你可以.. 使用Jersey的
据称,JIRA和Confluence附带了一个REST API浏览器工具 尽管默认情况下,REST API浏览器包含在JIRA服务器、Confluence服务器和Stash实例中,或者包含开发人员工具箱插件的任何应用程序中,但在艾特莱森云应用程序中不可用。https://developer.atlassian.com/server/framework/atlassian-sdk/using-the