Из комментариев, которые у нас были, я думаю, что ваша проблема может быть решена с помощью моделей как таковых:
# just for completeness. should probably use an actual user model
class User (models.Model):
name = models.CharField(max_length=64)
class MyObject(models.Model):
name = models.CharField(max_length=64)
users = models.ManyToMany(User, through='MyObjectUsers', symmetrical=False)
def add_relations(self, relations):
for key, list in relations.items():
for id in list:
users.add(user=User.objects.get(pk=id), rel_type=key)
class MyObjectUsers(models.Model):
REL_TYPE_CHOICES=(
('TYPE1','TYPE1'),
('TYPE2','TYPE2')
)
myobject = models.ForeignKey('MyObject', null=True, on_delete=models.SET_NULL)
user = models.ForeignKey('User', null=True, on_delete=models.SET_NULL)
rel_type = models.CharField(max_length=32, choices = REL_TYPE_CHOICES)
В документации django показано, как пройти через отношения.
С вышеупомянутой реализацией MyObject
вы сможете вызывать .add_relations({'TYPE1':[1,2,3]})
в MyObject
экземпляре, чтобы создать необходимые отношения.
Я написал это на своем телефоне, поэтому я не знаю, работает ли он (будет тестировать завтра)