、、、、、またはその他の数学文字記号を。に含めることはできないことに気付き-ました。、、、またはも使用できません。+/*related_name:|.
上記の文字のいずれかがに含まれている場合related_name、Djangomodels.pyは検証しますが、クエリルックアップを実行すると、次のようなエラーがスローされます。
Q(userprofile.user__place__managers=user)
SyntaxError: keyword can't be an expression
特殊文字を使用したいのはrelated_name、の形をしたいからです{class_name}{field_name}。たとえば、UserProfileモデルクラスの場合、次のようにします。
class UserProfile(models.Model)
user = models.OneToOneField(User, related_name='userprofile-user')
user_type = models.ManyToManyFields(UserType, related_name='userprofile-user_type')
そうすれば、関係を逆方向に追跡することを含むクエリを実行しますが、それでも、関係を逆方向に追跡する方法を知っています。たとえば、私が単にする場合
user_type = models.ManyToManyFields(UserType, related_name='user_type')
その後、私はを行うことUserTypeからアクセスできます。しかし、これにより、のフィールドのように見えます。UserUser.objects.get(pk=1).user_type.all()user_typeUser
代わりに、私がそのようなことをすることができれば、私はからにUser.objects.get(pk=1).userprofile-user_type.all()行くことを知っているでしょう。UserUserProfileUserType
私の考え方はおそらく少数派であり、ほとんどの人はrelated_name='user_type'デフォルトを使用するか、使用することさえあると思いますuser_type_set。
別の質問は次のようになります:命名の良いスタイルは何related_nameですか?