2

「code_key」の長さが 10 文字のレコードのみを表示する方法を教えてください。

現在、「qs = Code.objects.filter(code_key.len ()=10)」を使用するとエラーが返されます。

前もって感謝します。

admin.py

class CodeAdmin(admin.ModelAdmin):
    fields = ['code_key','redemption_date','user','movie']

    #
    list_display = ('code_key','redemption_date','user','movie')

    #
    search_fields = ('code_key','user__email','movie__title')

    def queryset(self, request):
        """
        Filter the objects displayed in the change_list
        """
        qs = super(CodeAdmin, self).queryset(request)
        return qs


    def changelist_view(self, request, extra_context=None):
        my_context = {
            'total': 'some value query',
        }
        return super(CodeAdmin, self).changelist_view(request,extra_context=my_context)

models.py

class Code(models.Model):
    id = models.AutoField(primary_key=True)
    code_key = models.CharField(max_length=20,unique=True)
    redemption_date = models.DateTimeField(null=True, blank=True)
    user = models.ForeignKey(User, blank=True, null=True)
    movie = models.ForeignKey(Movie, blank=True, null=True)


    # ...
    def display_record(self):
        return (self.code_key.__len__() == 10)

    # ...
    def __unicode__(self):
        return self.code_key
4

2 に答える 2

5

MySQL を使用していますか?

qs = Code.objects.extra(where=['CHAR_LENGTH(code_key) = 10'])
于 2012-07-26T01:20:45.783 に答える
0

使用する

filter(lambda code_object: len(code_object.code_key) == 10, list_of_code_objects)

ステートメント len(code_object.code_key) == 10 が true を返さない list_of_code_objects のすべてのメンバーを削除します。

編集: 元の list_of_code_objects には影響しません。テストに合格した元のリスト内のオブジェクトのみを含む新しいリストを返します。

于 2012-07-26T01:04:28.463 に答える