diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index 7368194e3fbc450047bb57a8d2b70a8149726f00..f7361aa23dcdf9b47150c46403cde3471ec73a9c 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -65,7 +65,7 @@ class Person(ExtensibleModel):
     SEX_CHOICES = [("f", _("female")), ("m", _("male"))]
 
     user = models.OneToOneField(
-        get_user_model(), on_delete=models.SET_NULL, blank=True, null=True, related_name="person"
+        get_user_model(), on_delete=models.SET_NULL, blank=True, null=True, related_name="person", verbose_name=_("Linked user")
     )
     is_active = models.BooleanField(verbose_name=_("Is person active?"), default=True)
 
@@ -99,7 +99,7 @@ class Person(ExtensibleModel):
         "self", verbose_name=_("Guardians / Parents"), symmetrical=False, related_name="children", blank=True
     )
 
-    primary_group = models.ForeignKey("Group", models.SET_NULL, null=True, blank=True)
+    primary_group = models.ForeignKey("Group", models.SET_NULL, null=True, blank=True, verbose_name=_("Primary group"))
 
     description = models.TextField(verbose_name=_("Description"), blank=True, null=True)
 
@@ -220,12 +220,12 @@ class DummyPerson(Person):
 
 
 class AdditionalField(ExtensibleModel):
-    title = models.CharField(verbose_name=_("Title of field"), max_length=50)
+    title = models.CharField(verbose_name=_("Title of field"), max_length=255)
     field_type = models.CharField(verbose_name=_("Type of field"), choices=FIELD_CHOICES, max_length=50)
 
     class Meta:
-        verbose_name = _("Addtitional field")
-        verbose_name_plural = _("Addtitional fields")
+        verbose_name = _("Addtitional field for groups")
+        verbose_name_plural = _("Addtitional fields for groups")
 
 
 class Group(ExtensibleModel):
@@ -243,11 +243,11 @@ class Group(ExtensibleModel):
 
     icon_ = "group"
 
-    name = models.CharField(verbose_name=_("Long name of group"), max_length=255, unique=True)
-    short_name = models.CharField(verbose_name=_("Short name of group"), max_length=255, unique=True, blank=True, null=True)
+    name = models.CharField(verbose_name=_("Long name"), max_length=255, unique=True)
+    short_name = models.CharField(verbose_name=_("Short name"), max_length=255, unique=True, blank=True, null=True)
 
-    members = models.ManyToManyField("Person", related_name="member_of", blank=True, through="PersonGroupThrough")
-    owners = models.ManyToManyField("Person", related_name="owner_of", blank=True)
+    members = models.ManyToManyField("Person", related_name="member_of", blank=True, through="PersonGroupThrough", verbose_name=_("Members"))
+    owners = models.ManyToManyField("Person", related_name="owner_of", blank=True, verbose_name=_("Owners"))
 
     parent_groups = models.ManyToManyField(
         "self",
@@ -258,7 +258,7 @@ class Group(ExtensibleModel):
     )
 
     type = models.ForeignKey("GroupType", on_delete=models.CASCADE, related_name="type", verbose_name=_("Type of group"), null=True, blank=True)
-    additional_fields = models.ManyToManyField(AdditionalField)
+    additional_fields = models.ManyToManyField(AdditionalField, verbose_name=_("Additional fields"))
 
 
     def get_absolute_url(self) -> str:
@@ -300,7 +300,7 @@ class PersonGroupThrough(ExtensibleModel):
             setattr(self, field_name, field_instance)
 
 class Activity(ExtensibleModel):
-    user = models.ForeignKey("Person", on_delete=models.CASCADE, related_name="activities")
+    user = models.ForeignKey("Person", on_delete=models.CASCADE, related_name="activities", verbose_name=_("User"))
 
     title = models.CharField(max_length=150, verbose_name=_("Title"))
     description = models.TextField(max_length=500, verbose_name=_("Description"))
@@ -317,7 +317,7 @@ class Activity(ExtensibleModel):
 
 class Notification(ExtensibleModel):
     sender = models.CharField(max_length=100, verbose_name=_("Sender"))
-    recipient = models.ForeignKey("Person", on_delete=models.CASCADE, related_name="notifications")
+    recipient = models.ForeignKey("Person", on_delete=models.CASCADE, related_name="notifications", verbose_name=_("Recipient"))
 
     title = models.CharField(max_length=150, verbose_name=_("Title"))
     description = models.TextField(max_length=500, verbose_name=_("Description"))
@@ -401,7 +401,7 @@ class Announcement(ExtensibleModel):
 
     title = models.CharField(max_length=150, verbose_name=_("Title"))
     description = models.TextField(max_length=500, verbose_name=_("Description"), blank=True)
-    link = models.URLField(blank=True, verbose_name=_("Link"))
+    link = models.URLField(blank=True, verbose_name=_("Link to detailed view"))
 
     valid_from = models.DateTimeField(
         verbose_name=_("Date and time from when to show"), default=timezone.datetime.now
@@ -527,15 +527,14 @@ class DashboardWidget(PolymorphicModel, PureDjangoModel):
 
 
 class CustomMenu(ExtensibleModel):
-    id = models.CharField(max_length=100, verbose_name=_("Menu ID"), primary_key=True)
-    name = models.CharField(max_length=150, verbose_name=_("Menu name"))
+    name = models.CharField(max_length=100, verbose_name=_("Menu ID"), unique=True)
 
     def __str__(self):
         return self.name if self.name != "" else self.id
 
     @classmethod
     def get_default(cls, name):
-        menu, _ = cls.objects.get_or_create(id=name, defaults={"name": name})
+        menu, _ = cls.objects.get_or_create(name=name)
         return menu
 
     class Meta: