, так что вы хотите, чтобы регулярное выражение соответствовало как mm / dd / yy
^((0?1?1){1}|(0?1?2){1}|([0]?3|4|5|6|7|8|9))\/((0?1?2?3?1){1}|(0?1?2?(2|3|4|5|6|7|8|9|0))|(30))\/[1-90]{4}$
, это регулярное выражение будет точно соответствовать вашему желанию в этом формате. mm / dd / yy a не будет проверять фальшивую дату вы можете проверить регулярное выражение на regex101 , которое вы можете проверить для дат 12/30/2040 и 09/09/2020 и что вы хотите для этого формата. Я думаю, что это также кратчайшее регулярное выражение, которое вы можете найти для этого формата
Я нашел один способ добиться желаемого, используя прокси модели, чтобы обойти тот факт, что каждая модель может быть зарегистрирована только один раз.
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'pubdate','user')
class MyPost(Post):
class Meta:
proxy = True
class MyPostAdmin(PostAdmin):
def get_queryset(self, request):
return self.model.objects.filter(user = request.user)
admin.site.register(Post, PostAdmin)
admin.site.register(MyPost, MyPostAdmin)
Тогда по умолчанию PostAdmin
будет доступен по адресу /admin/myapp/post
, а список сообщений, принадлежащих пользователю, будет находиться по адресу /admin/myapp/myposts
.
После просмотра http://code.djangoproject.com/wiki/DynamicModels я придумал следующую функцию полезности функции:
def create_modeladmin(modeladmin, model, name = None):
class Meta:
proxy = True
app_label = model._meta.app_label
attrs = {'__module__': '', 'Meta': Meta}
newmodel = type(name, (model,), attrs)
admin.site.register(newmodel, modeladmin)
return modeladmin
Ее можно использовать следующим образом:
class MyPostAdmin(PostAdmin):
def get_queryset(self, request):
return self.model.objects.filter(user = request.user)
create_modeladmin(MyPostAdmin, name='my-posts', model=Post)