[英]Insert into many to many field Django
I'm trying to build Reddit in Django and for that, I am creating a board where users can discuss topics.我正在尝试在 Django 中构建 Reddit,为此,我正在创建一个用户可以讨论主题的论坛。 But I am not able to map user and board.但是我无法访问 map 用户和板。
Model: Model:
class Board(models.Model):
id = models.AutoField(primary_key=True)
unique_id = models.CharField(max_length=100, null=False, unique=True)
created_by = models.ForeignKey(User_Detail, on_delete=models.CASCADE, related_name="board_creator")
name = models.CharField(max_length=100, null=False, unique=
True)
class UserBoardMapping(models.Model):
user = models.ManyToManyField(User_Detail)
board = models.ManyToManyField(Board)
user_type = models.CharField(max_length=10, choices=USER_TYPE, default='moderator')
My view:我的看法:
class CreateBoard(APIView):
def post(self, request):
data = JSONParser().parse(request)
unique_id = data.get('board_id', None)
created_by = data.get('created_by', None)
name = data.get('name', None)
if not created_by or not name:
return Response({'ERROR': 'Please provide both username and password'},
status=status.HTTP_400_BAD_REQUEST)
if Board.objects.filter(name=name).exists():
return JsonResponse({'ERROR': "Board Already registered! "},
status=status.HTTP_409_CONFLICT)
if not User_Detail.objects.filter(username=created_by).exists():
return JsonResponse({'ERROR': "Username is not registered! "},
status=status.HTTP_404_NOT_FOUND)
username = User_Detail.objects.get(username=created_by)
board = Board(unique_id=unique_id, created_by=username, name=name)
board.save()
user_board_mapping = UserBoardMapping(user=username, board=board)
user_board_mapping.save()
error:错误:
Direct assignment to the forward side of a many-to-many set is prohibited. Use user.set() instead.
UserBoardMapping is not working, how can I map user and board and Insert data in many to many field what am I doing wrong here in this code? UserBoardMapping 不工作,我怎么能 map 用户和板并在多对多字段中插入数据我在这段代码中做错了什么?
For your UserBoardMapping, user
and board
are M2M fields.对于您的 UserBoardMapping, user
和board
是 M2M 字段。 Because of that, you have to use .set()
like in your error message.因此,您必须像在错误消息中那样使用.set()
。 You can also use .add()
if you want to add a value, like in your example.如果你想添加一个值,你也可以使用.add()
,就像你的例子一样。
user_board_mapping = UserBoardMapping.objects.create(user_type='whatyouwant')
user_board_mapping.user.add(username)
user_board_mapping.board.add(board)
You can find here some examples: https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_many/#many-to-many-relationships您可以在这里找到一些示例: https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_many/#many-to-many-relationships
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.